# ans                                  #答案，用全局变量表示
# def dfs(层数, 其他参数):
#     if (出局判断):                    #到达最底层/满足条件，退出
#         更新答案ans                   #ans一般用全局变量表示
#         return                      #返回上一层
#
#     #剪枝，减小搜索范围
#
#     for (枚举下一层可能情况):           #对每个情况继续DFS
#         if (used[i] == 0):            #如果状态i没有被用过，进入下一层
#             used[i] = 1               #标记状态i为用过，在更底层时不能再使用
#             dfs(层数+1, 其他参数)        #下一层
#             used[i] = 0               #恢复状态i，回溯时不影响上一层对这个状态的使用
#     return                            #返回上一层
